const sqlite3 = require('sqlite3').verbose();

// 打开数据库
const db = new sqlite3.Database('nayo_cloud', (err) => {
    if (err) {
        console.error(err.message);
    } else {
        console.log('Connected to the nayo_cloud database.');
        // 创建表
        createTables();
    }
});

// 创建表
function createTables() {
    const createAdminTable = `CREATE TABLE IF NOT EXISTS admin (
        data TEXT
    )`;
    const createSettingsTable = `CREATE TABLE IF NOT EXISTS settings (
        data TEXT
    )`;
    const createUserTable = `CREATE TABLE IF NOT EXISTS user (
        uid INTEGER,
        id TEXT,
        user_name TEXT,
        user_group TEXT,
        registDate TEXT
    )`;
    const createFileTable = `CREATE TABLE IF NOT EXISTS file (
        fileName TEXT,
        uploader INTEGER,
        uploadTime TEXT,
        size TEXT
    )`;

    db.serialize(() => {
        db.run(createAdminTable);
        db.run(createSettingsTable);
        db.run(createUserTable);
        db.run(createFileTable);
    });
}

// 查询表中所有内容
function selectAll(table, callback) {
    const query = `SELECT * FROM ${table}`;
    db.all(query, [], (err, rows) => {
        if (err) {
            callback(err, null);
        } else {
            callback(null, rows);
        }
    });
}

// 根据 id 查询表中某一行
function selectById(table, id, callback) {
    const query = `SELECT * FROM ${table} WHERE id = ?`;
    db.get(query, [id], (err, row) => {
        if (err) {
            callback(err, null);
        } else {
            callback(null, row);
        }
    });
}

// 删除表中某一行
function deleteById(table, id, callback) {
    const query = `DELETE FROM ${table} WHERE id = ?`;
    db.run(query, [id], function (err) {
        if (err) {
            callback(err);
        } else {
            callback(null);
        }
    });
}

// 查询 uploader 为某一个值的所有条目
function selectByUploader(uploader, callback) {
    const query = `SELECT * FROM file WHERE uploader = ?`;
    db.all(query, [uploader], (err, rows) => {
        if (err) {
            callback(err, null);
        } else {
            callback(null, rows);
        }
    });
}

// // 示例使用
// // 查询 user 表所有内容
// selectAll('user', (err, rows) => {
//     if (err) {
//         console.error(err);
//     } else {
//         console.log('All users:', rows);
//     }
// });
//
// // 根据 id 查询 user 表某一行
// selectById('user', '123', (err, row) => {
//     if (err) {
//         console.error(err);
//     } else {
//         console.log('User with id 123:', row);
//     }
// });
//
// // 删除 user 表中 id 为 123 的行
// deleteById('user', '123', (err) => {
//     if (err) {
//         console.error(err);
//     } else {
//         console.log('User with id 123 deleted.');
//     }
// });
//
// // 查询 uploader 为 1 的所有文件条目
// selectByUploader(1, (err, rows) => {
//     if (err) {
//         console.error(err);
//     } else {
//         console.log('Files uploaded by user 1:', rows);
//     }
// });
//
// // 关闭数据库连接
// process.on('exit', () => {
//     db.close((err) => {
//         if (err) {
//             console.error(err.message);
//         } else {
//             console.log('Closed the database connection.');
//         }
//     });
// });